Aller au contenu

Auto-éditer un wikilivre/Auto-référencer/sclipco.sh

Un livre de Wikilivres.
#! /bin/bash
# Fichier : sclipco.sh
VERSION=210125
#P Nom du fichier de commandes : sclipco
#P Syntaxe : "ajouter_sclipco <nom du livre>"
#P Exemple : "./ajouter_sclpco LivreTest" à la console.
#P Date de création : 16 mai 2020
#P Modifié le : 18 mai 2020 par GC
#P Modifié le : 20 mai 2020 par GC lignes 25 à 37 'Retour' de ajouter_sclip.
#P Modifié le : 30 mai 2020 par CG pour l'installation automatique du module.
#P Modifié le : 4 juin 2020 par GC mise à jour des liens d'exécution.
#P Version de la documentation sur WikiLivres le : 20 mai 2020

#P## Une version 'commons' est possible en co-édition avec la commande
#P##   'ajouter_sclic'.
#P##   Les images, sources, licences, auteurs sont copiés dans les 
#P##   sous-répertoires respectifs depuis le sous-répertoire du livre.
#P##   Les noms des images de 'commons' commencent par 'File:' alors qu'en
#P##   version wikibooks les noms des images commencent par 'Fichier:'
#P##   Dans l'exemple 'LivreTest' :
#P##     cd $Projet/ArticleUn; ls Fichier*.html Fichier*.html.* | sed s/Fichier:/File:/g > ArticleUn.commonshtmlpict
#P##     while read pict; do cp $Projet/$1/$pict .; done < ArticleUn.commonshtmlpict
#P##   Il suffit de construire la page LivreTest.sclip à partir des fichiers :
#P##     *.title, *.source, *.license, *.auteur
#P

if [ $0=sclipco ]; then echo "sclipco : Version "$VERSION; fi

#O inclure dans bin : ajouter_sclip.inc ou, dans src/* ajouter_sclip.inc.sh
source ajouter_sclip.inc
Retour=$?
#T echo "Code de retour de la commande ajouter_sclip : " $Retour
#O si le code de retour est différent de '0'
    if [ $Retour -gt '0' ] && [ $Personal = "true" ];
#O alors afficher le nom du module de commande en erreur et quitter 'annexer'
#O   avec retour à 1
    then
      echo "Erreur au module shell 'ajouter_sclip'"
      exit 1
#O fin si
    fi

echo "fichier cible : "$PageScliP
echo "------"
#T exit
#O tant que l'on peut lire les lignes du fichier $Projet/$1.pj
    while read pjline
    do
#O   si la ligne lue n'est pas $1 (nom du livre)
#T    echo "ligne lue : " $line
      if [ $pjline != $1 ]
#O     alors:
        then
#T      echo "ligne prise en compte : " $pjline

#O     entrer dans le répertore de l'article,
        cd $Projet/$pjline
#O     lister les 'Fichier*.html' et Fichier*.html.* dans le fichier
#O       $pjline.commonshtmlpict
        ls Fichier*.html Fichier*.html.* | sed s/Fichier:/File:/g > $pjline.commonshtmlpict
      
#O     copier les fichiers Fichier*.html Fichier*.html.* du répertoire
#O       $Projet/$1
        while read pict; do cp $Projet/$1/$pict .; done < $pjline.commonshtmlpict
        
#O     copier le nom de l'article dans $1.sclip
        echo "'''Article : $pjline'''<br \>" >> $PageScliP 
        echo "'''Article : $pjline'''"

#P## Annexe version 'commons' ############################## 
#O     sélectionner les images de chaque articles dans Article/htmlcommons.list
#O     exclure .title|.source|.license|.auteur|.str|.tmp
        cat $pjline.commonshtmlpict | grep -v -E ".title|.source|.license|.auteur|.str|.tmp" > htmlcommons.list
#T      cat htmlcommons.list
     
#O     tant qu'il y a des lignes d'images dans le fichier htmlcommons.list
        while read htmlcommonsline
        do
#O       images, 
          cat $htmlcommonsline.title >> $PageScliP 
          cat $htmlcommonsline.title

#O       source, 
          cat $htmlcommonsline.source >> $PageScliP 
          cat $htmlcommonsline.source

#O       license, 
          cat $htmlcommonsline.license >> $PageScliP
	      cat $htmlcommonsline.license
	   
#O       auteur(s). 
          cat $htmlcommonsline.auteur >> $PageScliP
          cat $htmlcommonsline.auteur
   
#O       terminer la page $P$PageScliP 
          echo "" >> $PageScliP

#O     fin du tant qu'il y a des lignes d'images
        done < htmlcommons.list

#O   fin du 'si la ligne n'est pas le nom du livre'.
      fi      

#O fin du tq .pj
    done < $Projet/$1.pj

#O terminer la page $PageScliP 
    echo "</div>" >> $PageScliP
    echo "{{Nouvelle page imprimée}}" >> $PageScliP

exit 0
# Fin de sclipco.sh